home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / comm / tcp / amitcptelnetf.lha / amitcp_telnet+ftp / telnet / externs.h < prev    next >
C/C++ Source or Header  |  1993-07-10  |  11KB  |  374 lines

  1. /*
  2.  * Copyright (c) 1988, 1990 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted provided
  6.  * that: (1) source distributions retain this entire copyright notice and
  7.  * comment, and (2) distributions including binaries display the following
  8.  * acknowledgement:  ``This product includes software developed by the
  9.  * University of California, Berkeley and its contributors'' in the
  10.  * documentation or other materials provided with the distribution and in
  11.  * all advertising materials mentioning features or use of this software.
  12.  * Neither the name of the University nor the names of its contributors may
  13.  * be used to endorse or promote products derived from this software without
  14.  * specific prior written permission.
  15.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  16.  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  17.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18.  *
  19.  *    @(#)externs.h    5.1 (Berkeley) 9/14/90
  20.  */
  21.  
  22. #ifndef    BSD
  23. # define BSD 43
  24. #endif
  25.  
  26. #if (BSD > 43 || defined(SYSV_TERMIO)) && !defined(USE_TERMIO)
  27. # define USE_TERMIO
  28. #endif
  29.  
  30. #include <stdio.h>
  31. #include <setjmp.h>
  32. #ifndef    FILIO_H
  33. #include <sys/ioctl.h>
  34. #else
  35. #include <sys/filio.h>
  36. #endif
  37. #ifdef    USE_TERMIO
  38. # ifndef    VINTR
  39. #  ifdef SYSV_TERMIO
  40. //#   include <sys/termio.h>
  41. #  else
  42. #   include <sys/termios.h>
  43. #   define termio termios
  44. #  endif
  45. # endif
  46. #endif
  47. #if defined(NO_CC_T) || !defined(USE_TERMIO)
  48. # if !defined(USE_TERMIO)
  49. typedef char cc_t;
  50. # else
  51. typedef unsigned char cc_t;
  52. # endif
  53. #endif
  54.  
  55. #ifndef    _POSIX_VDISABLE
  56. # ifdef sun
  57. #  include <sys/param.h>    /* pick up VDISABLE definition, mayby */
  58. # endif
  59. # ifdef VDISABLE
  60. #  define _POSIX_VDISABLE VDISABLE
  61. # else
  62. #  define _POSIX_VDISABLE ((unsigned char)'\377')
  63. # endif
  64. #endif
  65.  
  66. #define    SUBBUFSIZE    256
  67.  
  68. extern struct Library *SockBase;
  69. extern int errno;        /* outside this world */
  70.  
  71. // extern char
  72. //    *strcat(),
  73. //    *strcpy();            /* outside this world */
  74.  
  75. extern int
  76.     flushout,        /* flush output */
  77.     connected,        /* Are we connected to the other side? */
  78.     globalmode,        /* Mode tty should be in */
  79.     telnetport,        /* Are we connected to the telnet port? */
  80.     localflow,        /* Flow control handled locally */
  81.     localchars,        /* we recognize interrupt/quit */
  82.     donelclchars,        /* the user has set "localchars" */
  83.     showoptions,
  84.     net,        /* Network file descriptor */
  85.     tin,        /* Terminal input file descriptor */
  86.     tout,        /* Terminal output file descriptor */
  87.     crlf,        /* Should '\r' be mapped to <CR><LF> (or <CR><NUL>)? */
  88.     autoflush,        /* flush output when interrupting? */
  89.     autosynch,        /* send interrupt characters with SYNCH? */
  90.     SYNCHing,        /* Is the stream in telnet SYNCH mode? */
  91.     donebinarytoggle,    /* the user has put us in binary */
  92.     dontlecho,        /* do we suppress local echoing right now? */
  93.     crmod,
  94.     netdata,        /* Print out network data flow */
  95. #ifdef    KERBEROS
  96.     kerberized,        /* Try to use Kerberos */
  97. #endif
  98.     prettydump,        /* Print "netdata" output in user readable format */
  99. #if    defined(unix)
  100.     termdata,        /* Print out terminal data flow */
  101. #endif    /* defined(unix) */
  102.     debug;            /* Debug level */
  103.  
  104. extern cc_t escape;    /* Escape to command mode */
  105. #ifdef    KLUDGELINEMODE
  106. extern cc_t echoc;    /* Toggle local echoing */
  107. #endif
  108.  
  109. extern char
  110.     *prompt;        /* Prompt for command. */
  111.  
  112. extern char
  113.     doopt[],
  114.     dont[],
  115.     will[],
  116.     wont[],
  117.     options[],        /* All the little options */
  118.     *hostname;        /* Who are we connected to? */
  119.  
  120. /*
  121.  * We keep track of each side of the option negotiation.
  122.  */
  123.  
  124. #define    MY_STATE_WILL        0x01
  125. #define    MY_WANT_STATE_WILL    0x02
  126. #define    MY_STATE_DO        0x04
  127. #define    MY_WANT_STATE_DO    0x08
  128.  
  129. /*
  130.  * Macros to check the current state of things
  131.  */
  132.  
  133. #define    my_state_is_do(opt)        (options[opt]&MY_STATE_DO)
  134. #define    my_state_is_will(opt)        (options[opt]&MY_STATE_WILL)
  135. #define my_want_state_is_do(opt)    (options[opt]&MY_WANT_STATE_DO)
  136. #define my_want_state_is_will(opt)    (options[opt]&MY_WANT_STATE_WILL)
  137.  
  138. #define    my_state_is_dont(opt)        (!my_state_is_do(opt))
  139. #define    my_state_is_wont(opt)        (!my_state_is_will(opt))
  140. #define my_want_state_is_dont(opt)    (!my_want_state_is_do(opt))
  141. #define my_want_state_is_wont(opt)    (!my_want_state_is_will(opt))
  142.  
  143. #define    set_my_state_do(opt)        {options[opt] |= MY_STATE_DO;}
  144. #define    set_my_state_will(opt)        {options[opt] |= MY_STATE_WILL;}
  145. #define    set_my_want_state_do(opt)    {options[opt] |= MY_WANT_STATE_DO;}
  146. #define    set_my_want_state_will(opt)    {options[opt] |= MY_WANT_STATE_WILL;}
  147.  
  148. #define    set_my_state_dont(opt)        {options[opt] &= ~MY_STATE_DO;}
  149. #define    set_my_state_wont(opt)        {options[opt] &= ~MY_STATE_WILL;}
  150. #define    set_my_want_state_dont(opt)    {options[opt] &= ~MY_WANT_STATE_DO;}
  151. #define    set_my_want_state_wont(opt)    {options[opt] &= ~MY_WANT_STATE_WILL;}
  152.  
  153. /*
  154.  * Make everything symetrical
  155.  */
  156.  
  157. #define    HIS_STATE_WILL            MY_STATE_DO
  158. #define    HIS_WANT_STATE_WILL        MY_WANT_STATE_DO
  159. #define HIS_STATE_DO            MY_STATE_WILL
  160. #define HIS_WANT_STATE_DO        MY_WANT_STATE_WILL
  161.  
  162. #define    his_state_is_do            my_state_is_will
  163. #define    his_state_is_will        my_state_is_do
  164. #define his_want_state_is_do        my_want_state_is_will
  165. #define his_want_state_is_will        my_want_state_is_do
  166.  
  167. #define    his_state_is_dont        my_state_is_wont
  168. #define    his_state_is_wont        my_state_is_dont
  169. #define his_want_state_is_dont        my_want_state_is_wont
  170. #define his_want_state_is_wont        my_want_state_is_dont
  171.  
  172. #define    set_his_state_do        set_my_state_will
  173. #define    set_his_state_will        set_my_state_do
  174. #define    set_his_want_state_do        set_my_want_state_will
  175. #define    set_his_want_state_will        set_my_want_state_do
  176.  
  177. #define    set_his_state_dont        set_my_state_wont
  178. #define    set_his_state_wont        set_my_state_dont
  179. #define    set_his_want_state_dont        set_my_want_state_wont
  180. #define    set_his_want_state_wont        set_my_want_state_dont
  181.  
  182.  
  183. extern FILE
  184.     *NetTrace;        /* Where debugging output goes */
  185. extern unsigned char
  186.     NetTraceFile[];    /* Name of file where debugging output goes */
  187. extern void
  188.     SetNetTrace();    /* Function to change where debugging goes */
  189.  
  190. extern jmp_buf
  191.     peerdied,
  192.     toplevel;        /* For error conditions. */
  193.  
  194. extern void
  195.     command(),
  196. #if    !defined(NOT43)
  197.     dosynch(),
  198. #endif    /* !defined(NOT43) */
  199.     get_status(),
  200.     Dump(),
  201.     printoption(),
  202.     printsub(),
  203.     sendnaws(),
  204.     setconnmode(),
  205.     setcommandmode(),
  206.     setneturg(),
  207.     sys_telnet_init(),
  208.     telnet(),
  209.     TerminalFlushOutput(),
  210.     TerminalNewMode(),
  211.     TerminalRestoreState(),
  212.     TerminalSaveState(),
  213.     tninit(),
  214.     upcase(),
  215.     willoption(),
  216.     wontoption();
  217.  
  218. #if    defined(NOT43)
  219. extern int
  220.     dosynch();
  221. #endif    /* defined(NOT43) */
  222.  
  223. #ifndef    USE_TERMIO
  224.  
  225. #ifndef __SASC
  226. #include <sgtty.h>
  227. #endif
  228.  
  229. extern struct    tchars ntc;
  230. //extern struct    ltchars nltc;
  231. extern struct    sgttyb nttyb;
  232.  
  233. # define termEofChar        ntc.t_eofc
  234. # define termEraseChar        nttyb.sg_erase
  235. # define termFlushChar        nltc.t_flushc
  236. # define termIntChar        ntc.t_intrc
  237. # define termKillChar        nttyb.sg_kill
  238. # define termLiteralNextChar    nltc.t_lnextc
  239. # define termQuitChar        ntc.t_quitc
  240. # define termSuspChar        nltc.t_suspc
  241. # define termRprntChar        nltc.t_rprntc
  242. # define termWerasChar        nltc.t_werasc
  243. # define termStartChar        ntc.t_startc
  244. # define termStopChar        ntc.t_stopc
  245. # define termForw1Char        ntc.t_brkc
  246. extern cc_t termForw2Char;
  247. extern cc_t termAytChar;
  248.  
  249. # define termEofCharp        (cc_t *)&ntc.t_eofc
  250. # define termEraseCharp        (cc_t *)&nttyb.sg_erase
  251. # define termFlushCharp        (cc_t *)&nltc.t_flushc
  252. # define termIntCharp        (cc_t *)&ntc.t_intrc
  253. # define termKillCharp        (cc_t *)&nttyb.sg_kill
  254. # define termLiteralNextCharp    (cc_t *)&nltc.t_lnextc
  255. # define termQuitCharp        (cc_t *)&ntc.t_quitc
  256. # define termSuspCharp        (cc_t *)&nltc.t_suspc
  257. # define termRprntCharp        (cc_t *)&nltc.t_rprntc
  258. # define termWerasCharp        (cc_t *)&nltc.t_werasc
  259. # define termStartCharp        (cc_t *)&ntc.t_startc
  260. # define termStopCharp        (cc_t *)&ntc.t_stopc
  261. # define termForw1Charp        (cc_t *)&ntc.t_brkc
  262. # define termForw2Charp        (cc_t *)&termForw2Char
  263. # define termAytCharp        (cc_t *)&termAytChar
  264.  
  265. # else
  266.  
  267. extern struct    termio new_tc;
  268.  
  269. # define termEofChar        new_tc.c_cc[VEOF]
  270. # define termEraseChar        new_tc.c_cc[VERASE]
  271. # define termIntChar        new_tc.c_cc[VINTR]
  272. # define termKillChar        new_tc.c_cc[VKILL]
  273. # define termQuitChar        new_tc.c_cc[VQUIT]
  274.  
  275. # ifndef    VSUSP
  276. extern cc_t termSuspChar;
  277. # else
  278. #  define termSuspChar        new_tc.c_cc[VSUSP]
  279. # endif
  280. # if    defined(VFLUSHO) && !defined(VDISCARD)
  281. #  define VDISCARD VFLUSHO
  282. # endif
  283. # ifndef    VDISCARD
  284. extern cc_t termFlushChar;
  285. # else
  286. #  define termFlushChar        new_tc.c_cc[VDISCARD]
  287. # endif
  288. # ifndef VWERASE
  289. extern cc_t termWerasChar;
  290. # else
  291. #  define termWerasChar        new_tc.c_cc[VWERASE]
  292. # endif
  293. # ifndef    VREPRINT
  294. extern cc_t termRprntChar;
  295. # else
  296. #  define termRprntChar        new_tc.c_cc[VREPRINT]
  297. # endif
  298. # ifndef    VLNEXT
  299. extern cc_t termLiteralNextChar;
  300. # else
  301. #  define termLiteralNextChar    new_tc.c_cc[VLNEXT]
  302. # endif
  303. # ifndef    VSTART
  304. extern cc_t termStartChar;
  305. # else
  306. #  define termStartChar        new_tc.c_cc[VSTART]
  307. # endif
  308. # ifndef    VSTOP
  309. extern cc_t termStopChar;
  310. # else
  311. #  define termStopChar        new_tc.c_cc[VSTOP]
  312. # endif
  313. # ifndef    VEOL
  314. extern cc_t termForw1Char;
  315. # else
  316. #  define termForw1Char        new_tc.c_cc[VEOL]
  317. # endif
  318. # ifndef    VEOL2
  319. extern cc_t termForw2Char;
  320. # else
  321. #  define termForw2Char        new_tc.c_cc[VEOL]
  322. # endif
  323. # ifndef    VSTATUS
  324. extern cc_t termAytChar;
  325. #else
  326. #  define termAytChar        new_tc.c_cc[VSTATUS]
  327. #endif
  328.  
  329. # if !defined(CRAY) || defined(__STDC__)
  330. #  define termEofCharp        &termEofChar
  331. #  define termEraseCharp    &termEraseChar
  332. #  define termIntCharp        &termIntChar
  333. #  define termKillCharp        &termKillChar
  334. #  define termQuitCharp        &termQuitChar
  335. #  define termSuspCharp        &termSuspChar
  336. #  define termFlushCharp    &termFlushChar
  337. #  define termWerasCharp    &termWerasChar
  338. #  define termRprntCharp    &termRprntChar
  339. #  define termLiteralNextCharp    &termLiteralNextChar
  340. #  define termStartCharp    &termStartChar
  341. #  define termStopCharp        &termStopChar
  342. #  define termForw1Charp    &termForw1Char
  343. #  define termForw2Charp    &termForw2Char
  344. #  define termAytCharp        &termAytChar
  345. # else
  346.     /* Work around a compiler bug */
  347. #  define termEofCharp        0
  348. #  define termEraseCharp    0
  349. #  define termIntCharp        0
  350. #  define termKillCharp        0
  351. #  define termQuitCharp        0
  352. #  define termSuspCharp        0
  353. #  define termFlushCharp    0
  354. #  define termWerasCharp    0
  355. #  define termRprntCharp    0
  356. #  define termLiteralNextCharp    0
  357. #  define termStartCharp    0
  358. #  define termStopCharp        0
  359. #  define termForw1Charp    0
  360. #  define termForw2Charp    0
  361. #  define termAytCharp        0
  362. # endif
  363. #endif
  364.  
  365.  
  366. /* Ring buffer structures which are shared */
  367.  
  368. extern Ring
  369.     netoring,
  370.     netiring,
  371.     ttyoring,
  372.     ttyiring;
  373.  
  374.